Micron Document
🎖️GitЯра🎖️


Displaying Rendered • View rawDownload

core/api/README.md features/lockdown (1ea87dbb) Text, 3.64 KB

Meshtastic Android API

This module contains the stable AIDL interface and dependencies required to integrate with the Meshtastic Android app.

Integration

![](https://jitpack.io/#meshtastic/Meshtastic-Android)

To communicate with the Meshtastic Android service from your own application, we recommend using JitPack.

Add the JitPack repository to your root T383838build.gradle.kts (or T383838settings.gradle.kts):

T282828
Te6edf3dependencyResolutionManagement Tb4b4b4{
Te6edf3repositories Tb4b4b4{
Te6edf3googleTb4b4b4(Tb4b4b4)
Te6edf3mavenCentralTb4b4b4(Tb4b4b4)
Te6edf3maven Tb4b4b4{ Te6edf3url Tff7b72= Te6edf3uriTb4b4b4(Ta5d6ff"Ta5d6ffhttps://jitpack.ioTa5d6ff"Tb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}


Add the dependencies to your module's T383838build.gradle.kts:

T282828
Te6edf3dependencies Tb4b4b4{
T8b949e// Replace 'v2.7.13' with the specific version you need
Tff7b72val Te6edf3meshtasticVersion Tff7b72= Ta5d6ff"Ta5d6ffv2.7.13Ta5d6ff"

T8b949e// The core AIDL interface and Intent constants
Te6edf3implementationTb4b4b4(Ta5d6ff"Ta5d6ffcom.github.meshtastic.Meshtastic-Android:meshtastic-android-api:Tffd700$Te6edf3meshtasticVersionTa5d6ff"Tb4b4b4)
T8b949e// Data models (DataPacket, MeshUser, NodeInfo, etc.)
Te6edf3implementationTb4b4b4(Ta5d6ff"Ta5d6ffcom.github.meshtastic.Meshtastic-Android:meshtastic-android-model:Tffd700$Te6edf3meshtasticVersionTa5d6ff"Tb4b4b4)
T8b949e// Protobuf definitions (PortNum, Telemetry, etc.)
Te6edf3implementationTb4b4b4(Ta5d6ff"Ta5d6ffcom.github.meshtastic.Meshtastic-Android:meshtastic-android-proto:Tffd700$Te6edf3meshtasticVersionTa5d6ff"Tb4b4b4)
Tb4b4b4}


Usage

1. Bind to the Service

Use the T383838IMeshService interface to bind to the Meshtastic service. It is recommended to query the package manager to find the correct service component, as the package name may vary between build flavors (e.g., Play Store vs. F-Droid).

T282828
Tff7b72val Te6edf3intent Tff7b72= Te6edf3IntentTb4b4b4(Ta5d6ff"Ta5d6ffcom.geeksville.mesh.ServiceTa5d6ff"Tb4b4b4)
Tff7b72val Te6edf3resolveInfo Tff7b72= Te6edf3packageManagerTb4b4b4.Te6edf3queryIntentServicesTb4b4b4(Te6edf3intentTb4b4b4, T79c0ff0Tb4b4b4)

Tff7b72if Tb4b4b4(Te6edf3resolveInfoTb4b4b4.Te6edf3isNotEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3serviceInfo Tff7b72= Te6edf3resolveInfoTff7b72[T79c0ff0Tff7b72]Tb4b4b4.Te6edf3serviceInfo
Te6edf3intentTb4b4b4.Te6edf3setClassNameTb4b4b4(Te6edf3serviceInfoTb4b4b4.Te6edf3packageNameTb4b4b4, Te6edf3serviceInfoTb4b4b4.Te6edf3nameTb4b4b4)
Te6edf3bindServiceTb4b4b4(Te6edf3intentTb4b4b4, Te6edf3serviceConnectionTb4b4b4, Te6edf3ContextTb4b4b4.Te6edf3BIND_AUTO_CREATETb4b4b4)
Tb4b4b4}


2. Interact with the API

Once bound, cast the T383838IBinder to T383838IMeshService:

T282828
Tff7b72override Tff7b72fun Td2a8ffonServiceConnectedTb4b4b4(Te6edf3nameTb4b4b4: Te6edf3ComponentName?Tb4b4b4, Te6edf3serviceTb4b4b4: Te6edf3IBinder?Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3meshService Tff7b72= Te6edf3IMeshServiceTb4b4b4.Te6edf3StubTb4b4b4.Te6edf3asInterfaceTb4b4b4(Te6edf3serviceTb4b4b4)
T8b949e// Example: Send a broadcast text message
Tff7b72val Te6edf3packet Tff7b72= Te6edf3DataPacketTb4b4b4(
Te6edf3to Tff7b72= Te6edf3DataPacketTb4b4b4.Te6edf3ID_BROADCASTTb4b4b4,
Te6edf3bytes Tff7b72= Ta5d6ff"Ta5d6ffHello Meshtastic!Ta5d6ff"Tb4b4b4.Te6edf3encodeToByteArrayTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toByteStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3dataType Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3id Tff7b72= Te6edf3meshServiceTb4b4b4.Te6edf3packetIdTb4b4b4,
Te6edf3wantAck Tff7b72= Tff7b72true
Tb4b4b4)
Te6edf3meshServiceTb4b4b4.Te6edf3sendTb4b4b4(Te6edf3packetTb4b4b4)
Tb4b4b4}


3. Register a BroadcastReceiver

To receive packets and status updates, register a T383838BroadcastReceiver. Use T383838MeshtasticIntent constants for the actions.

Important: On Android 13+ (API 33), you must use T383838RECEIVER_EXPORTED since you are receiving broadcasts from a different application.

T282828
T8b949e// Using constants from org.meshtastic.core.api.MeshtasticIntent
Tff7b72val Te6edf3intentFilter Tff7b72= Te6edf3IntentFilterTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3apply Tb4b4b4{
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_RECEIVED_TEXT_MESSAGE_APPTb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_NODE_CHANGETb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_CONNECTION_CHANGEDTb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_MESH_DISCONNECTEDTb4b4b4)
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3BuildTb4b4b4.Te6edf3VERSIONTb4b4b4.Te6edf3SDK_INT Tff7b72>Tff7b72= Te6edf3BuildTb4b4b4.Te6edf3VERSION_CODESTb4b4b4.Te6edf3TIRAMISUTb4b4b4) Tb4b4b4{
Te6edf3registerReceiverTb4b4b4(Te6edf3meshtasticReceiverTb4b4b4, Te6edf3intentFilterTb4b4b4, Te6edf3ContextTb4b4b4.Te6edf3RECEIVER_EXPORTEDTb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3registerReceiverTb4b4b4(Te6edf3meshtasticReceiverTb4b4b4, Te6edf3intentFilterTb4b4b4)
Tb4b4b4}


Modules

T383838core:api: Contains T383838IMeshService.aidl and T383838MeshtasticIntent.
T383838core:model: Contains Parcelable data classes like T383838DataPacket, T383838MeshUser, T383838NodeInfo.
T383838core:proto: Contains the generated Protobuf code (Wire).

Served by rngit 1.5.0 - Generated in 0.05s